home *** CD-ROM | disk | FTP | other *** search
/ TOS Silver 2000 / TOS Silver 2000.iso / Tools / TWILIGHT / TL_SOURC.E / NEU! / TL_START.S next >
Encoding:
Text File  |  1994-10-19  |  6.2 KB  |  195 lines

  1. ; ******************************************************************************
  2. ; *** 
  3. ; *** Mit diesem Startup-Code kann ein TwiLight-Modul debugged werden.
  4. ; *** Für das endgültige Modul muß 'DEBUG' auf 0 gesetzt werden.
  5. ; *** Ein Modul, daß mit DEBUG=1 compiliert bzw. assembliert wurde, kann dann
  6. ; *** im Debugger mit Symboltabelle, Debuginformationen usw. wie ein 
  7. ; *** ganz normales Programm gestartet werden. TWILIGHT.ACC wird auf C:\
  8. ; *** erwartet und nachgelden. Das Modul wird dann automatisch im Demo-Modus
  9. ; *** gestartet.
  10. ; ***
  11. ; *** Weiterhin können Module durch Anspringen des Labels 'RETURN' jederzeit,
  12. ; *** egal wie tief sie in einer Schleife verschachtelt sind, zu TwiLight
  13. ; *** zurückspringen, z.B. weil tl_check() das Aufwachen signalisiert.
  14. ; *** 
  15. ; ***
  16. ; *** (c) 1994 by Delirium Arts
  17. ; ***
  18. ; ******************************************************************************
  19.  
  20.  
  21. DEBUG=1
  22.  
  23.  
  24.                globl    errno                ; globale Pure C variablen
  25.  
  26.  
  27.  
  28. ********************************************************************************
  29. *                                                                              *
  30. *                              GLOBAL TEXT SECTION                             *
  31. *                                                                              *
  32. ********************************************************************************
  33.  
  34.                   text
  35.  
  36.                   ifne     DEBUG               ; Debug Version aktiv?
  37.  
  38.  
  39. ; *** 'Programm-' Start
  40.  
  41. start:             bra.s    .begin           ; ->
  42.  
  43.                    dc.b     "PCDEBUGTLM"     ; magic
  44.  
  45.                                      
  46. .begin:            lea      stackend,sp      ; neuer SP
  47.                    lea      start-256(pc),a6 ; Zeiger auf Basepage
  48.                    move.l   $c(a6),a1        ; Größe des Textsegments...
  49.                    add.l    $14(a6),a1       ;    ...des Datasegments
  50.                    add.l    $1c(a6),a1       ;    ...des BSS-Segments
  51.                    lea      256(a1),a1       ;    ...und Größe der Basepage addieren.
  52.                    pea      (a1)             ; Mshrink: size
  53.                    pea      (a6)             ;          Addresse
  54.                    clr      -(sp)            ;          Null-Parameter
  55.                    move     #74,-(sp)        ; ... und los
  56.                    trap     #1               ; Speicher freigeben
  57.  
  58.                    lea      12(sp),sp        ; Stackkorrektur
  59.  
  60.  
  61.  
  62. ; *** Startadresse des Moduls nach HEX wandeln.
  63.  
  64.                    lea      envadr+8,a0      ; zeiger auf letzte Stelle
  65.                    moveq    #8-1,d0          ; 8 Zeichen
  66.                    move.l   #modul_begin,d1  ; Startadresse des Moduls
  67.  
  68. .bintohex:         move.b   d1,d2            ; Zahlen einzeln konvertieren...
  69.                    and      #$f,d2
  70.                    add.b    #'0',d2
  71.                    cmp.b    #'9',d2
  72.                    bls.s    .store
  73.  
  74.                    add.b    #'A'-10-'0',d2   ; Bei Hex-Uahlen großbuchstaben nehmen
  75.  
  76. .store:            move.b   d2,-(a0)         ; rein in Buffer...
  77.                    lsr.l    #4,d1            ; Nächste Zahl
  78.                    dbf      d0,.bintohex     ; und das ganze acht mal.
  79.  
  80.  
  81. ; *** execute TwiLight
  82.  
  83.                    addq     #6,sp            ; Der liebe Stack
  84.                    pea      environment      ; Pexec: Zeiger auf Environment
  85.                    pea      128(a6)          ;        Kommandozeile
  86.                    pea      filespec         ;        Zeiger auf 'TWILIGHT.ACC'
  87.                    clr      -(sp)            ;        mode: load and go
  88.                    move     #75,-(sp)        ; 
  89.                    trap     #1               ; und los!
  90.  
  91.                    lea      16(sp),sp        ; Stack...
  92.  
  93.  
  94. ; *** Fehlerbehandlung
  95.  
  96.  
  97.                      tst      d0               ; TwiLight gefunden?
  98.                    bpl.s    .quit            ; ja! :-)
  99.  
  100.                    pea      errmsg           ; Fehler zeigen
  101.                    move     #9,-(sp)         ; Cconws
  102.                    trap     #1              
  103.  
  104.                    move     #7,(sp)          ; Waitkey
  105.                    trap     #1
  106.  
  107.                    addq     #6,sp            
  108.  
  109. .quit:             clr      -(sp)            ; Ciao...
  110.                    trap     #1
  111.  
  112.  
  113.  
  114.                    DATA
  115.  
  116. filespec:          dc.b     "C:\TWILIGHT.ACC",0  ; TwiLight-dateiname
  117. fsend:
  118.  
  119.  
  120. environment:       dc.b     "ADRESSE="   ; environment
  121. envadr:            dc.b     "........",0
  122.                    dc.b     0
  123.  
  124.                                              ; Fehler:
  125. errmsg:            dc.b     $07              ; bing!
  126.                    dc.b     $1b,"E"          ; Schirm leer machen
  127.                    dc.b     $0a              ; leerzeile
  128.                    dc.b     "FEHLER: TWILIGHT.ACC kann nicht geladen werden",$0d,$0a
  129.                    dc.b     "Bitte Taste drücken",0
  130.  
  131.                    EVEN
  132.  
  133.                    BSS
  134.  
  135. stack:             ds.l     256              ; Das reicht für'n Stack
  136. stackend:          ds.l     32               ; ...lieber etwas mehr nach hinten
  137.  
  138.  
  139.  
  140.                   endif                      ; ifne PCD
  141.  
  142.  
  143.  
  144. ; *** Und hier geht der eigentliche Startup-Code los
  145.  
  146.  
  147. ; Twilight C-Modul Startup-Code
  148. ; Version 0.02 
  149. ; vom 25.10.1992
  150. ; geschrieben von Arndt Weinmann
  151. ;                 Rheinallee 85
  152. ;                 6500 Mainz
  153. ;
  154. ; erweitert von Delirium Arts
  155. ; Letzte Änderung: 1.5. 1994
  156.  
  157.     .IMPORT module_main
  158.     .EXPORT RETURN
  159.  
  160.     .TEXT
  161.     
  162. modul_begin:    
  163.     bra.s modul_start                                   ; nicht zuerst in den C-Code, sondern Stack sichern!
  164.     dc.w 0                                                ; damit es ein langer Sprung ist.    
  165.     dc.l 'XTLM'                                            ; ModulMagic
  166.     dc.w $FFFF                                            ; Versionsnummer
  167.  
  168.     .IMPORT module_info
  169.     dc.l module_info                                    ; Pointer auf Modulstruktur
  170.  
  171.     
  172. modul_start:
  173.     move.l SP,stack_buffer                            ; Stack wegstecken - für Quick-Exit!
  174.     bra module_main
  175.  
  176.  
  177. RETURN:                                                    ; Quick-Exit...
  178.     move.l stack_buffer(PC),SP
  179.     rts
  180.  
  181.     
  182.     
  183.  
  184.  
  185.                      .DATA
  186.  
  187. stack_buffer:        dc.l        0
  188. errno:            dc.w     0                 ; global variables for Pure C
  189.  
  190.  
  191.                   end
  192.  
  193.  
  194. *EOF
  195.